﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static List<int> list = new List<int>();
        
        static int num;
        static int sum = 0;
        static int avg = 0;

        static int a;
        static int b;
        static int sum1 = 0;
        static void Main(string[] args)
        {
            //第一题调用方法
            fangfa();
            //第二题调用方法
            Console.WriteLine("--------------------------------------");
            fangfa1();
        }
        //            第一题：
        //一个考试管理系统，需要录入考生成绩，只能录入数字，否则会报类型转换异常。
        //请编写相关代码，
        //1、捕获FormatException异常，并打印输出“异常已处理；
        //2、捕获OverflowException异常，数值超出double范围的异常，并打印输出“异常已处理；
        //3、捕获一般异常Exception异常。
        //4、最终处理finally
        //录入成绩结束后，请输出，总学生数，总分数，平均分。
        static public void fangfa()
        {
            try
            {
                for (int i = 0; i < 1; i++)
                {
                    Console.WriteLine("请输入学生成绩：");
                    num = int.Parse(Console.ReadLine());
                    sum = num + sum;
                    avg = sum / (i + 1);
                    list.Add(num);
                    foreach (var item in list)
                    {
                        Console.Write(item + "\t");
                    }
                    Console.WriteLine();
                    Console.WriteLine($"学生人数 { list.Count} 分数{num} 总分{sum} 平均分{sum / list.Count}");
                }
            }
            catch (FormatException)
            {
                Console.WriteLine("异常已处理");
            }
            catch (OverflowException)
            {
                Console.WriteLine("异常已处理");
            }
            catch (Exception)
            {
                Console.WriteLine("异常已处理");
            }
            finally
            {

            }
            Console.WriteLine("请选择是否继续添加1、是  2否");
            int key = int.Parse(Console.ReadLine());
            switch (key)
            {
                case 1:
                    fangfa();
                    break;
                case 2:
                    Console.WriteLine($"学生人数 { list.Count} 分数{num} 总分{sum} 平均分{sum / list.Count}");
                    break;
                default:
                    break;
            }
        }
        //第二题：
        //编写一个程序，用以接收用户输入的两个浮点型的数值，一个值表示用户想要存放在银行账户中的余额，
        //另一个值表示用户想要从银行账户中提取的金额。
        //实现存取款功能，
        //用户功能选择：1、存款，2、取款
        //取款时：
        //当用户想要提取的金额大于余额时，请手动抛出一个ArgumentOutOfRangeException 参数超出范围的异常，
        //异常信息可以写“取款金额大于余额，请重新输入”
        //，如此以确保取款金额始终不大于当前余额。
        //操作结束，打印输出余额是多少。
        //最后再添加catch一般异常 Exception，使得数据类型转换的异常也能被捕获到。
    
        static public void fangfa1()
        {

            try
            {
                Console.WriteLine("请选择1、存款，2、取款");
                int key = int.Parse(Console.ReadLine());
                switch (key)
                {
                    case 1:
                        Console.WriteLine("请输入存款金额:");
                        a = int.Parse(Console.ReadLine());
                        list.Add(a);
                        sum1 = a + sum1;
                        break;
                    case 2:
                        Console.WriteLine("请输入要取款的金额：");
                        b = int.Parse(Console.ReadLine());
                        sum1 = a - b;
                        if (a < b)
                        {
                            sum1 = a;
                            Console.WriteLine("取款金额大于余额，请重新输入");
                        }

                        

                    default:
                        break;
                }
            }

            catch (Exception)
            {
                Console.WriteLine("异常已处理，请输入数字");
            }
            finally
            {
                Console.WriteLine("当前余额为：" + sum1);
            }
            Console.WriteLine("请选择要办理的业务1、取款或存款，2退出");
            int key1 = int.Parse(Console.ReadLine());
            switch (key1)
            {
                case 1:
                    fangfa1();
                    break;
                case 2:
                    Console.WriteLine("退出成功！！！");
                    break;
                default:
                    break;
            }
        }
    }
}

